package linkedList;

public class Q203 {
	public ListNode removeElements(ListNode head, int val) {
		//移除所有值为指定val的元素，并返回头节点。
		//1. 先处理头节点是要删除的元素的情况，用一个while循环
		while ( head != null && head.val == val) {
			//移除元素
			ListNode delNode = head.next;
			head = head.next;
			delNode.next = null;
		}
		//2. 处理其他位置的元素是要删除的元素的情况
		ListNode pre = head;
		while(pre.next != null) {
			ListNode delNode = pre.next;
			if(delNode.val == val) {
				//匹配成功，开始执行删除操作
				pre.next = delNode.next;
				delNode.next = null;
			} else {
				pre = pre.next;
			}
		}
		return head;
    }
	
	public static void main(String[] args) {
		int nums[] = {1,2,3,4,5,5,6,7};
		ListNode head = new ListNode(nums);
		System.out.println(head);
		ListNode listNode = (new Q203().removeElements(head, 5));
		System.out.println(listNode);
	}
}
